During the process of writing data into memory, the data is often encoded with extra bits to form a codeword. In the presence of noise, some of the bits representing the codeword may change, corrupting the original codeword with errors. When data is read from the memory, a decoder may be used to identify and correct the errors using error correction coding (ECC). For example, Bose-Chaudhuri-Hocquenghem (BCH) ECC schemes are commonly used in applications where bit errors tends to be uncorrelated.
Typically, a decoder is designed to correct errors for a worst-case scenario (e.g., a flash memory at the end-of-life or poor flash memory condition due to excessive wear or excessive data retention time). These ECC schemes attempt to correct a maximum number of errors every time error correction is performed. With each read from memory, the typical decoder implements the worst-case scenario ECC scheme. Increasing the level of error correction increases the amount of energy consumed by the decoder. Thus, operating a decoder with an ECC scheme that attempts to correct a maximum number of errors consumes more power than is needed to correct typical usage scenarios.